package its_models.expert_model;

import sudoku_properties.SudokuGameInfoParam;

/*********************************************************************
 * Class ExpertModelProperties
 * 1. store all default value of expert model
 *********************************************************************/
public class ExpertModelProperties {

    public ExpertModelProperties(){}

    public static String getNotApplicableIndicator(){
        return NOT_APPLICABLE_INDICATOR;
    }

    public static String getSingleInGroupIndicator(){
        return SINGLE_IN_GROUP_INDICATOR;
    }
    public static int getSingleInGroupIndex(){
        return SINGLE_IN_GROUP_INDEX;
    }
    public static String getHiddenSingleIndicator(){
        return HIDDEN_SINGLE_INDICATOR;
    }
    public static int getHiddenSingleIndex(){
        return HIDDEN_SINGLE_INDEX;
    }
    public static String getNakedSingleIndicator(){
        return NAKED_SINGLE_INDICATOR;
    }
    public static int getNakedSingleIndex(){
        return NAKED_SINGLE_INDEX;
    }
    public static String getIntersectReductIndicator(){
        return INTERSECT_REDUCT_INDICATOR;
    }
    public static int getIntersectReductIndex(){
        return INTERSECT_REDUCT_INDEX;
    }
    public static String getHiddenPairsIndicator(){
        return HIDDEN_PAIRS_INDICATOR;
    }
    public static int getHiddenPairsIndex(){
        return HIDDEN_PAIRS_INDEX;
    }
    public static String getNakedPairsIndicator(){
        return NAKED_PAIRS_INDICATOR;
    }
    public static int getNakedPairsIndex(){
        return NAKED_PAIRS_INDEX;
    }

    public static String getRowScopeIndicator(){
        return ROW_SCOPE_INDICATOR;
    }
    public static String getColScopeIndicator(){
        return COL_SCOPE_INDICATOR;
    }
    public static String getBoxScopeIndicator(){
        return BOX_SCOPE_INDICATOR;
    }
    public static String getAllScopeIndicator(){
        return ALL_SCOPE_INDICATOR;
    }


    public static String getDefineIndicator(){
        return DEFINE_INDICATOR;
    }
    public static String getEliminateIndicator(){
        return ELIMINATE_INDICATOR;
    }

    public static int getRowIndexIndicator(){
        return ROW_INDEX_INDICATOR;
    }
    public static int getColIndexIndicator(){
        return COL_INDEX_INDICATOR;
    }
    public static int getBoxIndexIndicator(){
        return BOX_INDEX_INDICATOR;
    }

    // 20091029 phrase2 start
    public static String getCellIndexValueSeparator(){
        return CELL_INDEX_VALUE_SEPARATOR;
    }
    public static String getCellValueRuleSeparator(){
        return CELL_VALUE_RULE_SEPARATOR;
    }
    public static String getStepSeparator(){
        return STEP_SEPARATOR;
    }
    public static String getScopeSeparator(){
        return SCOPE_SEPARATOR;
    }
   public static String getRuleSeparator(){
        return RULE_SEPARATOR;
    }
    // 20091029 phrase2 end

    /* Constant variables */
    final static String[] LOGICAL_RULES = SudokuGameInfoParam.getLogicalRules();
    /* local variables */
    /* Cell Status indicator */
    private final static String NOT_APPLICABLE_INDICATOR = "NA";

    /* Rules Abbr */
   
    private final static int SINGLE_IN_GROUP_INDEX = 0;
    private final static String SINGLE_IN_GROUP_INDICATOR = LOGICAL_RULES[SINGLE_IN_GROUP_INDEX];

    private final static int NAKED_SINGLE_INDEX = 1;
    private final static String NAKED_SINGLE_INDICATOR = LOGICAL_RULES[NAKED_SINGLE_INDEX];

    private final static int HIDDEN_SINGLE_INDEX = 2;
    private final static String HIDDEN_SINGLE_INDICATOR = LOGICAL_RULES[HIDDEN_SINGLE_INDEX];
    
    private final static int INTERSECT_REDUCT_INDEX = 3;
    private final static String INTERSECT_REDUCT_INDICATOR = LOGICAL_RULES[INTERSECT_REDUCT_INDEX];
    
    private final static int HIDDEN_PAIRS_INDEX = 5;
    private final static String HIDDEN_PAIRS_INDICATOR = LOGICAL_RULES[HIDDEN_PAIRS_INDEX];
   
    private final static int NAKED_PAIRS_INDEX = 4;
    private final static String NAKED_PAIRS_INDICATOR = LOGICAL_RULES[NAKED_PAIRS_INDEX];
    /* Effective scope */
    private final static String ROW_SCOPE_INDICATOR = "Row";
    private final static String COL_SCOPE_INDICATOR = "Column";
    private final static String BOX_SCOPE_INDICATOR = "Box";
    private final static String ALL_SCOPE_INDICATOR = "All Scope";

    /* Purpose of Last Method */
    private final static String DEFINE_INDICATOR = "DEFINE";
    private final static String ELIMINATE_INDICATOR = "ELIMINATE";

    /* Index Indicator */
    private final static int ROW_INDEX_INDICATOR = 0;
    private final static int COL_INDEX_INDICATOR = 1;
    private final static int BOX_INDEX_INDICATOR = 2;

    // 20091029 phrase2 start
    /* SEPARATOR */
    private final static String CELL_INDEX_VALUE_SEPARATOR = "-";
    private final static String CELL_VALUE_RULE_SEPARATOR = ";";
    private final static String STEP_SEPARATOR = "|";
    private final static String SCOPE_SEPARATOR = " IN ";
    private final static String RULE_SEPARATOR = " | ";
    // 20091029 phrase2 end



}
